# -*- coding: utf-8 -*-#
#-------------------------------------------------------------------------------
# 建立者:        黄周云  
# Name:         test11
# Description:   例10.9
# Author:       ASUS
# Date:         2019/3/24
#-------------------------------------------------------------------------------


class Myclass:
    #定义一个静态变量
    name = "Bill"
    def __init__(self):
        print("Myclass的构造方法被调用")
        #定义一个实例变量
        self.value = 20
    #定义静态方法
    @staticmethod
    def run():
        #访问静态变量
        print("*",Myclass.name,"*")
        # # 不能访问类方法
        # Myclass.do()
        print("Myclass的静态方法被调用")
    #定义类方法
    @classmethod
    #习惯写cls
    def do(cls):
        #self参数代表类本身
        print(cls)
        #访问静态变量
        print("[",cls.name,"]")
        #调用静态方法
        cls.run()
        print("成员方法do被调用")
    #定义实例变量
    def do1(self):
        #访问静态变量
        print(",",self.name,">")
        # 访问实例变量
        print(self.value)
        #访问静态方法
        self.run()
        #访问类方法
        self.do()

m = Myclass()

#通过类调用类方法
Myclass.do()
#通过类调用静态方法
Myclass.run()
#通过类调用实例方法
Myclass.do1(m)
#通过类访问静态变量
print("MyClass2.name","=",Myclass.name)
#通过类不能访问实例变量
# print(Myclass.value)


#通过实例调用类方法
m.do()
#通过实例调用静态方法
m.run()
#通过实例调用实例方法
m.do1()
#通过实例调用静态属性
print(m.name)
#通过实例调用实例属性
print(m.value)


#在外部可以通过类调用静态属性，改变静态属性的值
Myclass.name = "John"
print(Myclass.name)







